package net.melon.agency.inst.ssh.service;

import java.util.List;

import net.esj.auth.AuthException;
import net.esj.basic.utils.Pagination;
import net.melon.agency.pojo.AgencyGroup;
import net.melon.agency.pojo.AgencyUser;

public interface AuthService {

	/**
	 * 获得带有权限的用户
	 * @param id
	 * @return
	 */
	AgencyUser getUserWithAuth(String id);
	
	/**
	 * 
	 * @param group 如果group中的functions为null则不重新设置 否则重设
	 */
	void saveAuthGroupAndResetFuncs(AgencyGroup group);
	
	/**
	 * 管理员授予组权限
	 * @param admin
	 * @param groups
	 */
	void grantGroups(AgencyUser user,List<AgencyGroup> groups);
	
	/**
	 * 删除某个权限组
	 * @param group
	 * @return 这个权限组的名称
	 * @throws AuthException
	 */
	String deleteGroup(AgencyGroup group) throws AuthException;
	
	AgencyGroup getGroupWithFuncs(String groupId);
	
	List<AgencyGroup> listGroupByAgency(String agencyId);
	
	Pagination<AgencyGroup> pageGroup(Pagination pagination, List<String> list, AgencyUser user);

	Pagination<AgencyGroup> pageGroup(Pagination pagination);
	
	List<String> getChildAgencyUser(String id, List<String> list);
	/**
	 * 复制权限
	 * @name 被复制的对象的名称(全称)
	 * @id 复制的对象ID
	 * */
	AgencyUser getAgencyUserWithName(String name, String id);

	List<AgencyGroup> listGroupByAgencyUser(List<String> list);
	
	
}
